Optimize CONCATENATE LINES OF runtime path - #1777
Merged
Merged
Conversation
Copilot
AI
changed the title
[WIP] Optimize concatenate lines of
Optimize CONCATENATE LINES OF runtime path
Jul 30, 2026
|
Regression test results:
Performance test results:
Updated: 2026-07-30T11:55:46.302Z SHA: d7060e1 |
larshp
marked this pull request as ready for review
July 30, 2026 13:00
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CONCATENATE LINES OFbuilt an intermediatestring[]for every row and then calledjoin(), and re-evaluatedrespectingBlanks/separator conditions per row. The plainCONCATENATEpath was already converted to direct string building in #1388; this applies the same treatment to thelines: truepath.Runtime (
packages/runtime/src/statements/concatenate.ts)join()tab.array()instead of an iteratorrespectingBlanksand separator-presence checks out of the loopBehaviour is unchanged: separator only between lines, trailing blanks trimmed unless
RESPECTING BLANKS, empty table yields an empty result.Measurements
100k-row table of strings, 20 iterations:
SEPARATED BYRESPECTING BLANKSTests
performance/test43.ts(+ registration):43: CONCATENATE LINES OFc LENGTH 5table with/without separatorA trailing-whitespace fast path (skipping
trimEnd()based on the last char code) was also benchmarked but regressed the trimming case, so it was left out.